{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#   1.  数据探索\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 导入必要的工具包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "\n",
    "import pandas as pd\n",
    "import numpy as np\n",
    "\n",
    "# plotting\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sn\n",
    "\n",
    "#图形出现在notebook里而不是新窗口\n",
    "%matplotlib inline\n",
    "import warnings\n",
    "warnings.filterwarnings(\"ignore\")\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 读入数据"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 2,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读入数据\n",
    "train = pd.read_csv(\"day.csv\")\n",
    "train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    }
   ],
   "source": [
    "#输出数据的整体信息\n",
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数据探索"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "      <td>731.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>2.496580</td>\n",
       "      <td>0.500684</td>\n",
       "      <td>6.519836</td>\n",
       "      <td>0.028728</td>\n",
       "      <td>2.997264</td>\n",
       "      <td>0.683995</td>\n",
       "      <td>1.395349</td>\n",
       "      <td>0.495385</td>\n",
       "      <td>0.474354</td>\n",
       "      <td>0.627894</td>\n",
       "      <td>0.190486</td>\n",
       "      <td>848.176471</td>\n",
       "      <td>3656.172367</td>\n",
       "      <td>4504.348837</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>211.165812</td>\n",
       "      <td>1.110807</td>\n",
       "      <td>0.500342</td>\n",
       "      <td>3.451913</td>\n",
       "      <td>0.167155</td>\n",
       "      <td>2.004787</td>\n",
       "      <td>0.465233</td>\n",
       "      <td>0.544894</td>\n",
       "      <td>0.183051</td>\n",
       "      <td>0.162961</td>\n",
       "      <td>0.142429</td>\n",
       "      <td>0.077498</td>\n",
       "      <td>686.622488</td>\n",
       "      <td>1560.256377</td>\n",
       "      <td>1937.211452</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.059130</td>\n",
       "      <td>0.079070</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>0.022392</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>20.000000</td>\n",
       "      <td>22.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>183.500000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.337083</td>\n",
       "      <td>0.337842</td>\n",
       "      <td>0.520000</td>\n",
       "      <td>0.134950</td>\n",
       "      <td>315.500000</td>\n",
       "      <td>2497.000000</td>\n",
       "      <td>3152.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>366.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>7.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.498333</td>\n",
       "      <td>0.486733</td>\n",
       "      <td>0.626667</td>\n",
       "      <td>0.180975</td>\n",
       "      <td>713.000000</td>\n",
       "      <td>3662.000000</td>\n",
       "      <td>4548.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>548.500000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>10.000000</td>\n",
       "      <td>0.000000</td>\n",
       "      <td>5.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>0.655417</td>\n",
       "      <td>0.608602</td>\n",
       "      <td>0.730209</td>\n",
       "      <td>0.233214</td>\n",
       "      <td>1096.000000</td>\n",
       "      <td>4776.500000</td>\n",
       "      <td>5956.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>731.000000</td>\n",
       "      <td>4.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>12.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>6.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>0.861667</td>\n",
       "      <td>0.840896</td>\n",
       "      <td>0.972500</td>\n",
       "      <td>0.507463</td>\n",
       "      <td>3410.000000</td>\n",
       "      <td>6946.000000</td>\n",
       "      <td>8714.000000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "          instant      season          yr        mnth     holiday     weekday  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean   366.000000    2.496580    0.500684    6.519836    0.028728    2.997264   \n",
       "std    211.165812    1.110807    0.500342    3.451913    0.167155    2.004787   \n",
       "min      1.000000    1.000000    0.000000    1.000000    0.000000    0.000000   \n",
       "25%    183.500000    2.000000    0.000000    4.000000    0.000000    1.000000   \n",
       "50%    366.000000    3.000000    1.000000    7.000000    0.000000    3.000000   \n",
       "75%    548.500000    3.000000    1.000000   10.000000    0.000000    5.000000   \n",
       "max    731.000000    4.000000    1.000000   12.000000    1.000000    6.000000   \n",
       "\n",
       "       workingday  weathersit        temp       atemp         hum   windspeed  \\\n",
       "count  731.000000  731.000000  731.000000  731.000000  731.000000  731.000000   \n",
       "mean     0.683995    1.395349    0.495385    0.474354    0.627894    0.190486   \n",
       "std      0.465233    0.544894    0.183051    0.162961    0.142429    0.077498   \n",
       "min      0.000000    1.000000    0.059130    0.079070    0.000000    0.022392   \n",
       "25%      0.000000    1.000000    0.337083    0.337842    0.520000    0.134950   \n",
       "50%      1.000000    1.000000    0.498333    0.486733    0.626667    0.180975   \n",
       "75%      1.000000    2.000000    0.655417    0.608602    0.730209    0.233214   \n",
       "max      1.000000    3.000000    0.861667    0.840896    0.972500    0.507463   \n",
       "\n",
       "            casual   registered          cnt  \n",
       "count   731.000000   731.000000   731.000000  \n",
       "mean    848.176471  3656.172367  4504.348837  \n",
       "std     686.622488  1560.256377  1937.211452  \n",
       "min       2.000000    20.000000    22.000000  \n",
       "25%     315.500000  2497.000000  3152.000000  \n",
       "50%     713.000000  3662.000000  4548.000000  \n",
       "75%    1096.000000  4776.500000  5956.000000  \n",
       "max    3410.000000  6946.000000  8714.000000  "
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#对特征用常用统计量观察其分布\n",
    "train.describe()\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.1单变量分布分析(每个特征自己的分布)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 离散型特征的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "\n",
      "season属性的不同取值和出现的次数\n",
      "3    188\n",
      "2    184\n",
      "1    181\n",
      "4    178\n",
      "Name: season, dtype: int64\n",
      "\n",
      "mnth属性的不同取值和出现的次数\n",
      "12    62\n",
      "10    62\n",
      "8     62\n",
      "7     62\n",
      "5     62\n",
      "3     62\n",
      "1     62\n",
      "11    60\n",
      "9     60\n",
      "6     60\n",
      "4     60\n",
      "2     57\n",
      "Name: mnth, dtype: int64\n",
      "\n",
      "weathersit属性的不同取值和出现的次数\n",
      "1    463\n",
      "2    247\n",
      "3     21\n",
      "Name: weathersit, dtype: int64\n",
      "\n",
      "weekday属性的不同取值和出现的次数\n",
      "6    105\n",
      "1    105\n",
      "0    105\n",
      "5    104\n",
      "4    104\n",
      "3    104\n",
      "2    104\n",
      "Name: weekday, dtype: int64\n",
      "\n",
      "holiday属性的不同取值和出现的次数\n",
      "0    710\n",
      "1     21\n",
      "Name: holiday, dtype: int64\n",
      "\n",
      "workingday属性的不同取值和出现的次数\n",
      "1    500\n",
      "0    231\n",
      "Name: workingday, dtype: int64\n",
      "\n",
      "yr属性的不同取值和出现的次数\n",
      "1    366\n",
      "0    365\n",
      "Name: yr, dtype: int64\n"
     ]
    }
   ],
   "source": [
    "#对类别型特征，观察其取值范围及直方图\n",
    "categorical_features = ['season','mnth','weathersit','weekday','holiday','workingday','yr']\n",
    "for col in categorical_features:\n",
    "#在Python3.x之中print语句没有了，取而代之的是print()函数。\n",
    "    print ('\\n%s属性的不同取值和出现的次数'%col)\n",
    "    print (train[col].value_counts())\n",
    "    train[col] = train[col].astype('object')"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "对单个变量，可用直方图，箱体图，观测其分布，看是不是有噪声数据点等。seaborn的displot方法可以对数值型特征绘制直方图（distribution plot）,纵轴为归一化后的值（概率密度）"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#对数值型特征，直方图\n",
    "fig = plt.figure()\n",
    "sn.distplot(train[\"cnt\"], bins=30, kde=True)\n",
    "plt.xlabel(\"cnt\", fontsize=12)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"temp\"], bins=40, kde=True)\n",
    "plt.xlabel(\"temp\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"atemp\"], bins=40, kde=True)\n",
    "plt.xlabel(\"atemp\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAEKCAYAAADpfBXhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlzAAALEgAACxIB0t1+/AAAADl0RVh0U29mdHdhcmUAbWF0cGxvdGxpYiB2ZXJzaW9uIDIuMi4zLCBodHRwOi8vbWF0cGxvdGxpYi5vcmcvIxREBQAAIABJREFUeJzt3Xl4XOV59/HvPRrtu7VYtiVb3m3Z2CzGQCAsYQkJDbQJSYA0K6lLErK06Za2ydXS9E1C27xvEpIQklBCNrIHk7AEAsYYsEHed0veZcuSbMmStUszz/vHCCJk2RrJI52ZM7/Pdc2lM5oj6T7WzM9Hzzznfsw5h4iI+EvA6wJERCT2FO4iIj6kcBcR8SGFu4iIDyncRUR8SOEuIuJDCncRER9SuIuI+JDCXUTEh4Je/eDi4mJXWVnp1Y8XEUlI69evP+6cKxlpP8/CvbKykurqaq9+vIhIQjKzg9Hsp2EZEREfUriLiPiQwl1ExIcU7iIiPqRwFxHxIYW7iIgPKdxFRHxI4S4i4kMKdxERH/LsClWRePaTdYeG/fwdl0yf4EpExkZn7iIiPjRiuJtZhpm9YmabzWy7mf37MPukm9nPzKzWzNaZWeV4FCsiItGJZlimB3iLc67dzFKBNWb2hHNu7aB97gRanHNzzOw24CvAe8ehXhGJgoaVZMQzdxfRPnA3deDmhux2C/CDge1fAteamcWsShERGZWoxtzNLMXMNgGNwNPOuXVDdpkGHAZwzvUDrUBRLAsVEZHoRRXuzrmQc+58oBxYbmaLh+wy3Fn60LN7zGyFmVWbWXVTU9PoqxURkaiMaraMc+4ksAq4cchDdUAFgJkFgXygeZivf8A5t8w5t6ykZMSFREREZIyimS1TYmYFA9uZwHXAriG7rQQ+OLB9K/Csc+60M3cREZkY0cyWmQL8wMxSiPxn8HPn3O/M7B6g2jm3Evg+8EMzqyVyxn7buFUsIiIjGjHcnXNbgAuG+fwXBm13A++ObWkiIjJWukJVRMSHFO4iIj6kcBcR8SGFu4iIDyncRUR8SOEuIuJDCncRER9SuIuI+JDCXUTEhxTuIiI+pHAXEfEhhbuIiA8p3EVEfEjhLiLiQwp3EREfimaxDhHx2E/WHRr283dcMn2CK5FEoTN3EREfUriLiPiQwl1ExIcU7iIiPqRwFxHxIYW7iIgPKdxFRHxI4S4i4kMKdxERHxox3M2swsyeM7OdZrbdzD49zD5Xm1mrmW0auH1hfMoVEZFoRNN+oB/4rHNug5nlAuvN7Gnn3I4h+73gnPuz2JcoEv/O1B7gTNQ2QMbbiGfuzrl659yGge1TwE5g2ngXJiIiYzeqMXczqwQuANYN8/BlZrbZzJ4ws0UxqE1ERMYo6q6QZpYD/Ar4jHOubcjDG4AZzrl2M3s78Ftg7jDfYwWwAmD6dP1ZKiIyXqI6czezVCLB/mPn3K+HPu6ca3POtQ9sPw6kmlnxMPs94Jxb5pxbVlJSco6li4jImUQzW8aA7wM7nXNfPcM+ZQP7YWbLB77viVgWKiIi0YtmWOZy4P3AVjPbNPC5fwamAzjn7gduBT5mZv1AF3Cbc86NQ70iIhKFEcPdObcGsBH2uQ+4L1ZFicgb9YfDtHb2caKjl+aBW0tnLys3H6G1qx+A3PQgk7LTuHBGAS0dfUwrzCRgZ33pio9pmT2RONHa2cfB5g4ONXdy8EQnh5s7X98+erKLwX8KBwNGQVYaWWkpTCvIAIyOnn52HWvjye3HAJicl861CyazaGoeppBPOgp3kQnmnGP/8Q62HmllZ30bu+rb2Fl/imNt3W/YrzgnnemTMrm4spC27lwmZaVRmJ1GUXYaORlBAmbDXgzVeKqbe5/Yzao9TfzklUPMmJTFHZdMJzcjdaIOUeKAwl1kAvT2h9nTcIqd9W3sbWqnrTsylBIMGHNKc7hsdhELynKZWZzN9KIsKgqzyE7/08tzNFfAluZmcOGMQpZWFLDxUAuPbTnKt5/fywcvq4z1YUkcU7iLjJOwc+xr6qD6YDM769voCzkyU1OYXZrD7csruKCikDmlOaQFx6d/X0rAWFY5ibL8DH748kG+s3ov11dNZvG0/HH5eRJfFO4iMdYXCrPhUAsv1BynuaOXzNQULpxeyOJp+VQWZZMSGH44ZbyUF2Zx19WzeWD1Pu760Xoeu/sKCrPTTtvvTH8dqA9OYlK4i8RIKOx45UAzq3Y1cqqnn4rCTK5bWMGiqXmkpnjbXbswK407lk/n+2v286lHNvLQh5eTEtCbrH6mcBeJgYMnOli5+Sj1rd3MLM7mPRdXMKs4O65mqVRMyuLfb1nE5369lW88W8NnrpvndUkyjhTuIucgHHZ8a1UtD6zeR15mKrcvn87iKKYejrZFcKzcvnw6L+89wbee28tfXDCNGUXZntQh408rMYmMUVt3Hx99uJr//sMelpTn85nr5nLetPy4Olsfzr/ctJBgivHF3+/0uhQZRwp3kTFo7+nngw++wuo9TdxzyyLes6yC9GCK12VFZXJeBne/ZQ5P72hg9Z4mr8uRcaJwFxmlrt4QH/3Bq2ypa+W+Oy7gA5dVxv3Z+lB3XjGTGUVZ/Ptj2+kPhb0uR8aBwl1kFJxzfOqRjazb38xX37OUGxdP8bqkMUkPpvBPNy5gb1MHT2w75nU5Mg4U7iKj8PDLB3l6RwP/elMVt5yf2KtNvnVRGbOKs/nO6r2oiav/KNxFonSsrZv/fHwn18wv4SOXV3pdzjkLBIwVV85i25E2Xtqr5Rf8RuEuEoX+UJifv3qYvIwg//XupQk3xn4mf37BNEpy07n/+b1elyIxpnAXicK6/c0ca+vmy+9cQnFOutflxExGagofvrySF2qOc/Rkl9flSAwp3EVG0NUb4tldjcwpzeG6qslelxNz77tkBllpKazdp6EZP1G4i4xgdU0TXX0hblxU5nUp4yI/M5WbzpvCliOt9PSHvC5HYkThLnIWrV19vFh7nPMrCphakOl1OePmvRdX0NsfZtuRVq9LkRhRbxmRs1i1uxEHXL/Qf8Mxg100o5DinHSqD7Rw0YxJb3hMrYATk87cRc6gqzfEhkMtLC0vGLb/uZ+YGctmFHKwuZPGIcv9SWJSuIucwfpDLfSFHJfNLvK6lAlxwfQCAgbrD7Z4XYrEgMJdZBhh51i77wQzirKY5uOx9sFyM1JZUJbHxsMnCeuK1YSncBcZxu5jp2ju6OVNs4u9LmVCLa0ooL2nn/3HO7wuRc7RiOFuZhVm9pyZ7TSz7Wb26WH2MTP7upnVmtkWM7twfMoVmRgv7ztBfmYqVVPyvC5lQs2fnEtaSoAtdZo1k+iiOXPvBz7rnFsIXAp8wsyqhuzzNmDuwG0F8O2YVikygepaOqltbOfiyklJt85oWjDAwim5bDvSSiisoZlENmK4O+fqnXMbBrZPATuBoe3wbgEedhFrgQIzS8xeqJL0Ht10FIALKgo8rsQbS8oL6OoLsbep3etS5ByMaszdzCqBC4B1Qx6aBhwedL+O0/8DEIl7zjke3XSEGZOyfD/98UzmluaQkRpgS91Jr0uRcxB1uJtZDvAr4DPOubahDw/zJaf9TWdmK8ys2syqm5q0vJfEn531p9jT0M7SJD1rBwimBFg0JZ/tR9vo0ypNCSuqcDezVCLB/mPn3K+H2aUOqBh0vxw4OnQn59wDzrllzrllJSUlY6lXZFw9uukIwYBx3rR8r0vx1Hnl+fT0h6lt1NBMohqx/YBFGld/H9jpnPvqGXZbCdxtZo8AlwCtzrn62JUpMv7CYcejm45y1bwSstP92ZnjTK0EhppVkk1GaoAd9W0sTLIZQ34RzTP4cuD9wFYz2zTwuX8GpgM45+4HHgfeDtQCncCHY1+qyPh6rWf7P9+0kPbufq/L8VQwEGD+5Fx21rcRdo6ATxYnSSYjhrtzbg3Dj6kP3scBn4hVUSJeeGr7MdKDAa5bWMpvN542qph0qqbms7mulYMnOplZnO11OTJKukJVhMgsmad3NPDmuSVkpflzSGa05pXmkBIwdtYPnT8hiUDPYhFg+9E2jpzs4tPXzvW6lFGJdgx9LNJTU5hdks2O+jbetrjMN+vGJguduYsAT+9oIGBw7cJSr0uJK1VT8mnu6KWhrcfrUmSUFO4iwB92NHDRjEKKfLT4dSwsnJKLATvq1Wsm0SjcJekdbu5kZ30bN1T5c43Uc5GbkUrFpCx2aNw94SjcJek9vaMBgOur/L2U3lhVTcnj6MluTnb2el2KjILCXZLeMzsbmFuaQ6Wm+w3rtbbHOntPLAp3SWrtPf28eqCZt+iN1DMqzk2nJDdd4Z5gNBVSktpXnthFX8jRH3LjOq0w0VVNyeOFmiY6e/t1HUCC0Jm7JLXdDadICwaYUZTldSlxrWpKHmEXWX5QEoPCXZKWc46ahlPMLskhGNBL4WymFWaSlxHU0EwC0TNakta+4x20dPYxb3KO16XEvYAZC6fksafhlHq8JwiFuyStVbsjC8bMK831uJLEUDUlj76QU4/3BKFwl6T1/J4mSnLSk3Y5vdGaOdDjfftRDc0kAoW7JKWu3hBr953QkMwoBAMBFpTlsetYG6HwaatoSpxRuEtSevVAM739YeZO1pDMaFRNyaOzN8SBEx1elyIjULhLUlpTe5y0lACVRboqdTTmTc4lGDB2aGgm7incJSmtqTnORTMKSQvqJTAaacEAc0tz2FHfRmQBNolXemZL0jnR3sOO+jaumFvsdSkJqWpqPq1dfWw9ojbA8UzhLknnpb0nALh8jsJ9LBaW5RKwyJqzEr8U7pJ0Xqw9Tm5GkPOm5XtdSkLKSg9SWZTNU9sbvC5FzkLhLknFOccLNcd50+wiUgJaE3SsqqbmUdvYzt4mXdAUrxTuklQOnujkyMkurtCQzDl5rce7hmbil3p3SlJZU3scgCvmlozp69UWOKIgK40l5fk8tb2Bj189x+tyZBg6c5ek8mLtcaYVZFKpFr/n7K2Lyth8+CTHWru9LkWGMWK4m9mDZtZoZtvO8PjVZtZqZpsGbl+IfZki5y4Udry09wSXzynCTOPt5+qtiyJrzv5hh4Zm4lE0Z+4PATeOsM8LzrnzB273nHtZIrG3/WgrrV19mgIZI3NKc5lVks2T2xTu8WjEcHfOrQaaJ6AWkXH1Qk1kvP1NsxXusfL2xVNYu+8ETad6vC5FhojVmPtlZrbZzJ4ws0Vn2snMVphZtZlVNzU1xehHi0TnxdrjLCjLpSQ33etSfOMdS6cSdvDEtnqvS5EhYhHuG4AZzrmlwDeA355pR+fcA865Zc65ZSUlY5utIDIWXb0hqg+08Ga1HIip+WW5zJ+cy8pNR70uRYY453B3zrU559oHth8HUs1MryCJK9UHm+kNhTXePg7esXQK1QdbOHKyy+tSZJBzDnczK7OBqQdmtnzge5441+8rEktrao+TmmIsnznJ61J85x1LpwLwu806e48n0UyF/CnwMjDfzOrM7E4zu8vM7hrY5VZgm5ltBr4O3ObUC1TizJqa41w4vZCsNF23F2szirJZWp7PY1sU7vFkxGe6c+72ER6/D7gvZhWJxFhzRy/bj7bx2evneV2Kb71j6VS++Pud7G1qZ3aJli6MB7pCVXzvxddbDmi8fby8Y+lUAga/3lDndSkyQOEuvremRi1+x9vkvAyunFfCrzcc0eLZcULhLr7mnGNNbaTFbzBFT/fxdOtF5dS3dvPS3uNelyIo3MXnDrzW4neMXSAletctnEx+Ziq/XK+hmXigqQPia2tqIldCt3T0ql3vOMtITeHmpVP56SuHWFpeQEZqyhsev+OS6R5Vlpx05i6+tqb2OAVZqRRlp3ldSlK49aJy+sOOLXVaPNtrCnfxrf5QmJf2nmBOSY5a/E6QJeX5lOamU31QvQa9pnAX39pypJVT3f3MKdW864liFrkKuK6liyMtakfgJYW7+NaLNccxQxfVTLALpxeSmmKs268uJF5SuItvvVB7nEVT88hO17yBiZSRmsLS8gI2152kqzfkdTlJS+EuvtTR08/GQy3qAumRS2YW0RdybDzc4nUpSUvhLr70yv5m+kKON8/R/HYvTCvMpLwwk3X7m1EfQW/o71XxpRdqjpMeDLCsspBDzZ1el5OULplZxK821FHb1M7c0twzXmeg+e/jQ2fu4ktrapu4uHLSaRfSyMRZWp5PTnrw9cZtMrEU7uI7jW3d7GloVxdIjwVTAlwyaxJ7GtppbOv2upyko3AX31nzWotfvZnquUtmFhEMGC/u1bTIiaZwF99ZU3OcSdlpVE3J87qUpJeTHuT8igI2Hmqho6ff63KSisJdfCUcdqyuaeLyOcUEAmo5EA8un1NMf9ixdp/O3ieSwl18ZfvRNo6393LNfE2BjBeT8zJYWJbLS3tP0N2ni5omisJdfOMn6w7xtT/uwYDj7ZEWv2rzGx+unl9KV1+IdfvVUGyiKNzFV/Y0tDOtMJMctRyIKxWTsphbmsOamiZ6+8Nel5MUFO7iG509/Rxu7mTe5FyvS5FhXDO/lI7eEK8e0Nn7RFC4i2/UNLbjgPkK97hUWZzNzOJsXqhpoj+ks/fxpr9dJeGcaRx9T8MpstJSmFaYOcEVSbSumV/Kgy/uZ/2hFi6ZWeR1Ob424pm7mT1oZo1mtu0Mj5uZfd3Mas1si5ldGPsyRc4u7Bx7Gk4xb3IuAa26FLdml2RTUZjJ6j1NhMJqKDaeohmWeQi48SyPvw2YO3BbAXz73MsSGZ2jJ7vo6A0xb7IW5ohnZsY1C0pp6exj0+GTXpfjayOGu3NuNXC2d0BuAR52EWuBAjObEqsCRaKx+9gpDJhbqvH2eDd/ci5T8jNYtbuRsNoBj5tYvKE6DTg86H7dwOdEJsyehlOUF2Zq1aUEYGZcM7+UEx29bNbZ+7iJRbgPN8A57H/HZrbCzKrNrLqpqSkGP1oE2nv6qWvpYl6ZztoTRdXUPKbmZ/DHXY2a9z5OYhHudUDFoPvlwNHhdnTOPeCcW+acW1ZSosvDJTZqG09pCmSCCZhxfdVkmjt6+Xn14ZG/QEYtFuG+EvjAwKyZS4FW51x9DL6vSFR2HztFdloKUws0BTKRzJucy4xJWXzj2Rr1nBkH0UyF/CnwMjDfzOrM7E4zu8vM7hrY5XFgH1ALfBf4+LhVKzJE2DlqGts1BTIBmRk3LCqjoa2HH7580OtyfGfEd5+cc7eP8LgDPhGzikRG4UhLF529IbUcSFAzi7O5cl4J31pVy23LK8jNSPW6JN9Q+wFJaLtenwKp+e2J6u9vmE9LZx/fX7Pf61J8ReEuCW1nfRszirLI0hTIhHVeeT43Lirjey/sp6Wj1+tyfEOvCElYzR29HGvr5m2Ly7wuJSnFslf+Z2+Yx1M7jnH/83v53NsXxuz7JjOduUvC2lnfBqC1Un1g7uRc/uKCaTz00gHqW7u8LscXFO6SsHbUt1Gam05RTrrXpUgM/M1183AOvvZMjdel+ILCXRJSZ28/B0906KzdRyomZfG+S6fz8+rD1Da2e11OwlO4S0LafewUYQcLFe6+cvc1c8hKC/JfT+3yupSEp3CXhLSjvo3cjKAW5vCZopx0Vlw5i6e2N7DhUIvX5SQ0hbsknN7+MDUN7SyckqerUn3ozitmUpyTzpef2IVTS+Ax01RISTh7Gk7RGwqzeGq+16XIOMhOD/Lpa+fw+Ue3828rtzO/7I1Db3dcMt2jyhKLztwl4Ww90kpWWgozi7O9LkXGyW3Lp1OUncZT2xu0oMcYKdwloXT3hdh97BSLpuaTEtCQjF+lpgS4vmoyx9q6taDHGCncJaGs2t0UGZKZplkyfrd4Wj7TCjJ5emcD/SEt6DFaCndJKI9vrScrLYVZxWoU5ncBM966qIyTnX2s23+2ZZxlOAp3SRjdfSH+uLOBqil5GpJJEnNKc5hTmsNzuxu1oMcoKdwlYaza3URHb4jzpmmWTDJ566IyOntDvFCjdZdHQ+EuCeM3G+sozklnVomGZJLJtIJMlpTns6b2OG3dfV6XkzAU7pIQTnb28tyuJm5eOlVDMkno+oWTCYUdz+1q9LqUhKFwl4Tw+6319IbCvPPCaV6XIh4oykln+cxJvHqgmf3HO7wuJyEo3CUh/GbDEeaW5rBoqqZAJqtr5pcSDAT47z/s9rqUhKD2AxL3Dp3opPpgC/9w43xMvWR8J9oVnXIzUrlibjG/31LPjEm7KC/MesPjakvwRjpzl7j3m41HMIM/P19DMsnuijnFZKWl8OT2Y2oqNgKFu8S1cNjxi/WHuWxWEVML1N432WWkpvCWBaXsa+rQgh4jULhLXFtd00RdS5f+5JbXLa+cRGFWKk9uP6amYmehcJe49qO1hyjOSeeGqjKvS5E4ERxoKlbf2s3Wulavy4lbUYW7md1oZrvNrNbM/mmYxz9kZk1mtmng9tHYlyrJ5ujJLp7d1cB7Ly4nLajzEPmTJeUFTMnPiDQVC6up2HBGfMWYWQrwTeBtQBVwu5lVDbPrz5xz5w/cvhfjOiUJPfLqYRxw28UakpE3eq2pWHNHL6+qqdiwojkdWg7UOuf2Oed6gUeAW8a3LEl2faEwj7xyiKvnlVAxKWvkL5CkM7c0h5nF2Ty7q5EeNRU7TTThPg04POh+3cDnhnqXmW0xs1+aWcVw38jMVphZtZlVNzWpCZCc2WObj9J4qocPXFbpdSkSp8yMGxeV0dEbYk3tca/LiTvRhPtwV40MfYv6MaDSObcEeAb4wXDfyDn3gHNumXNuWUlJyegqlaQRDju+vWovC8pyuXq+nidyZhWTslg0NY8Xao9zvL3H63LiSjThXgcMPhMvB44O3sE5d8I599q/7HeBi2JTniSjZ3Y2UNPYzseunq0rUmVEN1SV0R8Kc9+ztV6XEleiCfdXgblmNtPM0oDbgJWDdzCzKYPu3gzsjF2Jkkycc3xr1V4qJmVy03lTRv4CSXoluelcNGMSP153kEMnOr0uJ26MGO7OuX7gbuApIqH9c+fcdjO7x8xuHtjtU2a23cw2A58CPjReBYu/rd3XzKbDJ1lx5WyCKZr+KNG5dkEpKQHjf55WU7HXRNU4zDn3OPD4kM99YdD254DPxbY0STbOOe59ahcluem8+6Jyr8uRBJKXmcpHLp/Jt1bt5a/ePIvFWq1LV6hK/Pjdlno2HjrJ398wn4zUFK/LkQTz11fNpiArla88uUtNxVC4S5zo7gvxlSd3saAsl3fprF3GID8zlU++ZS4v1BznWa3YpHCX+PDQSweoa+niX2+q0jJ6MmYfuGwGs0qy+eLvd9Lbn9xtCRTu4rnDzZ184481vGVBKVfMLfa6HElgqSkBPn9TFfuPd/Dwywe8LsdTCnfxVDjs+LtfbMbMuOeWRV6XIz5wzYJSrppXwtf+WJPUFzZpmT3x1IMv7mfd/mbufdeS05ZNi3b5NZGhPv9nVbzta6v5P4/v5KvvOd/rcjyhM3fxzK5jbdz71G6uXVDKu5fpTVSJnTmlOay4cha/3nCEl/ee8LocTyjcxRNNp3q486FqCjJT+dK7zlObAYm5u6+ZS3lhJp9/dFtSvrmqcJcJ190X4q9/WM2Jjh6+98FllOZmeF2S+FBmWgr/cctiahvb+c7ze70uZ8JpzF1i7kxj5XdcMp2+UJi/+dkmNhw6ybffdyFLygsmuDpJJtcsKOW8afn8v2dq6As5yvL/dCLh93V5deYuE6anP8THf7yBJ7Ydi7zhpcZgMgFuXjqVjLQUfrn+MKFw8ly5qnCXCdHTH+Kvf7iep3c0cM8ti7jziplelyRJIjs9yJ+fP5Wjrd2s2pM8V65qWEbGXUtHLz9ce5DGU9186Z3ncftyf/85LPFn0dR8zq8o4LldjcwpyWFGUbbXJY07hbuMq9rGdh559RBh53jow8u5ct7pKytpPrvEwkjPo5uXTuVQcyc/feUQd79l7gRV5R0Ny8i4CIUdT20/xv++uJ/s9CAfv2rOsMEuMlEyUlO4Y/l0OntD/KL6MGGfj78r3CXmjrV2c//ze3l+TxPLKgv5xNVzKM5N97osEaYWZPJnS6ZS09jOvU/5e2EPDctIzPT0h/jmc3u577kaMgfOkrRogsSbiysLOdraxf3P76W8MJO/vHSG1yWNC4W7xMT6gy3846+2UNvYzvkVBdx03hSy09/49NLYusQDM+MdS6aSmx7kC49uoywvg+uqJntdVsxpWEbOSXNHL5//7TZuvf8lOnv6+d8PX8x7llWcFuwi8SQlYHzjjgtYPC2fj/94A8/saPC6pJhTuMuY9PaH+e7qfVz1X8/xk1cO8cHLKvnD317FNfNLvS5NJCpZaUEe/shyFk7J5a4fref3W+q9LimmdHolo+Kc46ntDXzpiZ0cPNHJvMk5vG3xFCbnZbBy01GvyxMZlYKsNH700Uv4yEOv8smfbqCuZQErrpzli0Z2CneJSjjseGZnA99ctZfNh08yb3IOH3pTJfMm53pdmsg5yc1I5QcfWc7f/WIzX3piF1vqWrn31iUJP7SY2NXLuGvr7uM3G47wo7UHqWlsp2JSJl9653m8+6Jyfl5d53V5IjGRlRbkm3dcyHdW7+PeJ3ex6fBJvvgXixN6mFHhLqfp7O1n9Z4mfr/1GM/saKCrL8SS8ny++p6l3Lx0KsEUvVUj/mNm3HXVbC6aUcjnfr2VD//vq7z9vDI+c928hPwL1Zwb+SotM7sR+BqQAnzPOfflIY+nAw8DFwEngPc65w6c7XsuW7bMVVdXj7Fs75ytnW08ibZO5xyNp3rYWtfKliOtrN13go2HWugLOSZlp3Hj4jIKMlNPWwJPJNGd7TXb0x/iO8/v4/7n99LZG+LGRWW8/7IZXDqriJSAt+PxZrbeObdspP1GPHM3sxTgm8D1QB3wqpmtdM7tGLTbnUCLc26Omd0GfAV479hKl1jpC4Xp6OmnozcU+djTT2dvP3UtXdS1dHK4OfKxozcEgBksnprPRy6fyZXzSrhk5iSCKQHNT5ekkx5M4VPXzuX9l87gwRf389BLB3hy+zHK8jJ466LJvGlOMZfOLCI/K9XrUs8ommGZ5UCtc24fgJk9AtwCDA73W4B/G9j+JXCfmZmjFexCAAAHF0lEQVSL5s+CcxQOO8LOEXYMfIxsh8KOvlCY7r4Q3X2Rjz39Ibp6I9tdfSG6ekN09vbT+fp25NbV2x/52Penz/WFwgQMWrv6MAyzyFzZtJQAacEAL+87QXZaCplpKWSlpZCVFhz4mEJmWnDQY0EyU1NICVjkZkYgAMFAgEAAAmb0hxy9/WF6QyF6+x29oXDkfn+Y9p5+2rr7aOvq41T3a9v9nOrue327tauPplM99IaGX1osOy2FiklZVEzK4k1ziqgsymbR1DwWTslL+DeRRGKpMDuNz94wn09cM4c/7mzkNxuP8LPqw/zg5YMAlBdmsqAsl/LCLEpy0ynJTac0N53inHSy04OkBwOkBwNkpKaQFgwQDNiEzcSJ5pU8DTg86H4dcMmZ9nHO9ZtZK1AEHI9FkYM9sbWeT/504+shHitmkJn6WhinkJUafD2oC7NSSQsGcA4OnugEIv+RhMKR4G3t6mPbkVY6evrp6g3R0dsf09rOJjc9SF5mKrkZQfIyUplakMGCslwa2rrJTg9GbmkpZKcHyUoL8sE3zSA/M9UXU71EJkpGago3LZnCTUum0NMfYvPhVl490MzO+jb2NJxi3b5mTvX0R/W9zOBjV83mH25cMK41RxPuw6XA0OiKZh/MbAWwYuBuu5klYueeYsbhP62J8pk/bSb0cQyi44gvCXMc7zv7w+N6HP/4ZfjHsX95VM1wogn3OqBi0P1yYOjVKq/tU2dmQSAfaB76jZxzDwAPRFNYvDKz6mjezIh3Oo74ouOIL344jmjmtL0KzDWzmWaWBtwGrByyz0rggwPbtwLPTsR4u4iIDG/EM/eBMfS7gaeITIV80Dm33czuAaqdcyuB7wM/NLNaImfst41n0SIicnZRTY1wzj0OPD7kc18YtN0NvDu2pcWthB5WGkTHEV90HPEl4Y8jqouYREQkseg6chERH1K4D8PMbjSz3WZWa2b/NMzj6Wb2s4HH15lZ5cRXGZ0ojuVvzWyHmW0xsz+aWVyuOTbScQza71Yzc2YWlzMdojkOM3vPwO9ku5n9ZKJrjEYUz6vpZvacmW0ceG693Ys6R2JmD5pZo5ltO8PjZmZfHzjOLWZ24UTXOGbOOd0G3Yi8abwXmAWkAZuBqiH7fBy4f2D7NuBnXtd9DsdyDZA1sP2xeDyWaI5jYL9cYDWwFljmdd1j/H3MBTYChQP3S72ue4zH8QDwsYHtKuCA13Wf4ViuBC4Etp3h8bcDTxC5ludSYJ3XNUd705n76V5vt+Cc6wVea7cw2C3ADwa2fwlca/F5yeeIx+Kce8451zlwdy2R6xjiTTS/E4D/AO4FuieyuFGI5jj+Cvimc64FwDnXOME1RiOa43BA3sB2PqdfGxMXnHOrGeaanEFuAR52EWuBAjObMjHVnRuF++mGa7cw7Uz7OOf6gdfaLcSbaI5lsDuJnKXEmxGPw8wuACqcc7+byMJGKZrfxzxgnpm9aGZrBzqyxptojuPfgL80szoiM+0+OTGlxdxoX0NxQ12iThezdgtxIOo6zewvgWXAVeNa0dic9TjMLAD8X+BDE1XQGEXz+wgSGZq5mshfUS+Y2WLn3Mlxrm00ojmO24GHnHP/Y2aXEbkOZrFzbvhudvErUV7rp9GZ++lG026Bs7VbiAPRHAtmdh3wL8DNzrmeCaptNEY6jlxgMbDKzA4QGRtdGYdvqkb73HrUOdfnnNsP7CYS9vEkmuO4E/g5gHPuZSCDSL+WRBPVaygeKdxP56d2CyMey8BwxneIBHs8ju/CCMfhnGt1zhU75yqdc5VE3ju42TkXb6vBRPPc+i2RN7kxs2IiwzT7JrTKkUVzHIeAawHMbCGRcG+a0CpjYyXwgYFZM5cCrc65eq+LiorX7+jG443IO+R7iMwI+JeBz91DJDAg8kT9BVALvALM8rrmcziWZ4AGYNPAbaXXNY/lOIbsu4o4nC0T5e/DgK8SWS9hK3Cb1zWP8TiqgBeJzKTZBNzgdc1nOI6fAvVAH5Gz9DuBu4C7Bv0+vjlwnFvj9Xk13E1XqIqI+JCGZUREfEjhLiLiQwp3EREfUriLiPiQwl1ExIcU7pI0zKzyTN3/RPxG4S4i4kMKd0k2KWb23YFe6X8ws0wzW/VaqwIzKx5oYYCZfcjMfmtmj5nZfjO7e6D//caBpl6TPD0SkbNQuEuymUukpe4i4CTwrhH2XwzcQaTN7X8Cnc65C4CXgQ+MZ6Ei50LhLslmv3Nu08D2eqByhP2fc86dcs41EWnt/NjA57dG8bUinlG4S7IZ3PUyRKTFbj9/ei1knGX/8KD7YdQyW+KYwl0EDgAXDWzf6mEdIjGjcBeB/wY+ZmYvkZg9x0VOo66QIiI+pDN3EREfUriLiPiQwl1ExIcU7iIiPqRwFxHxIYW7iIgPKdxFRHxI4S4i4kP/HyqSKr435MF2AAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"hum\"], bins=40, kde=True)\n",
    "plt.xlabel(\"hum\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig = plt.figure()\n",
    "sn.distplot(train[\"windspeed\"], bins=40, kde=True)\n",
    "plt.xlabel(\"windspeed\", fontsize=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####   数值型特征的箱体图 boxplot& 提琴形图Violinplot"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "箱形图可以可视化特征的分位数等统计量，主要用于离群点的发现。其主要组成部分是箱子（box），须（whisker）和一些单独的数据点（离群值）。\n",
    "\n",
    "箱子显示了分布的四分位距；它的长度由25%（Q1，下四分位数）和75%（Q3，上司分位数）决定。箱中的水平线表示中位数（50%）。\n",
    "\n",
    "从箱子处延伸出来的线被称为须，表示数据点的总体散布，即位于区间(Q1 - 1.5xIQR, Q3 + 1.5xIQR)的数据点，其中IQR是四分位距：IQR= Q3 - Q1。\n",
    "\n",
    "离群值是须之外的数据点，它们作为单独的数据点，沿着中轴绘制。\n",
    "\n",
    "Violinplot结合了箱线图（boxplot）与核密度估计图的特点，可用于一个或多个分类变量情况下，连续变量数据的分布并进行了比较。 Violinplot还可以用于观察多个数据分布（如观察某个变量和标签之间的关系，本notebook最后部分）。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"cnt\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"cnt\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"temp\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"temp\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"atemp\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"atemp\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"hum\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"hum\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "_, axes = plt.subplots(1, 2, sharey=True, figsize=(6, 4))\n",
    "sn.boxplot(data=train[\"windspeed\"], ax=axes[0]); \n",
    "sn.violinplot(data=train[\"windspeed\"], ax=axes[1]);"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 1.2 特征与目标标签之间的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  每年骑行量的分布\n",
    "violinplot中用x表示类别（年）信息"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f377e966cc0>"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sn.violinplot(data=train[['yr',\n",
    "                        'cnt']],\n",
    "              x=\"yr\",y=\"cnt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "第一年和第二年图形相差挺大的，说明骑行量和年份有较大的关系"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 季节与骑车数量的关系\n",
    "\n",
    "violinplot得到详细分布\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f377e8c8e80>"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "sn.violinplot(data=train[['season',\n",
    "                        'cnt']],\n",
    "              x=\"season\",y=\"cnt\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "能看出来每个季节骑行量的分布不同,\n",
    "barplot利用矩阵条的高度反映数值变量的集中趋势，以及使用errorbar功能（差棒图）来估计变量之间的差值统计。\n",
    "谨记barplot展示的是某种变量分布的平均值"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5,1,'Seasonly distribution of counts')]"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['season',\n",
    "                       'cnt']],\n",
    "           x=\"season\",y=\"cnt\")\n",
    "ax.set(title=\"Seasonly distribution of counts\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "夏天2和秋天3的分布比较相似，春天1和冬天4互相的差异较大，说明每天的骑行量和季节也有关系,第2、3、4季度的骑行量明显高于第1季度\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####   月份与骑车数量的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5,1,'Monthly distribution of counts')]"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['mnth',\n",
    "                       'cnt']],\n",
    "           x=\"mnth\",y=\"cnt\")\n",
    "ax.set(title=\"Monthly distribution of counts\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "月份对每日骑车数量的影响，比较平稳"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 天气和骑车数辆的关系"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[Text(0.5,1,'weathersit distribution of counts')]"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,ax = plt.subplots()\n",
    "sn.barplot(data=train[['weathersit',\n",
    "                       'cnt']],\n",
    "           x=\"weathersit\",y=\"cnt\")\n",
    "ax.set(title=\"weathersit distribution of counts\")"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  工作日和节假日的分布"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f377eec81d0>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "fig,(ax1,ax2) = plt.subplots(ncols=2)\n",
    "sn.barplot(data=train,x='holiday',y='cnt',ax=ax1)\n",
    "sn.barplot(data=train,x='workingday',y='cnt',ax=ax2)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 数值型特征和y之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f377f2f2240>"
      ]
     },
     "execution_count": 22,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "corrMatt = train[[\"temp\",\"atemp\",\n",
    "                  \"hum\",\"windspeed\",\n",
    "                  \"cnt\"]].corr()\n",
    "mask = np.array(corrMatt)\n",
    "mask[np.tril_indices_from(mask)] = False\n",
    "sn.heatmap(corrMatt, mask=mask,\n",
    "           vmax=.8, square=True,annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "体感温度和温度高度相关,\n",
    "目标cnt与温度正相关、湿度和风速负相关"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### 1.3   两两数值特征之间的相关性"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.axes._subplots.AxesSubplot at 0x7f377ebfb8d0>"
      ]
     },
     "execution_count": 23,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "#get the names of all the columns\n",
    "cols = train.columns \n",
    "\n",
    "# 通常认为相关系数大于0.5的为强相关\n",
    "data_corr = train.corr()\n",
    "sn.heatmap(data_corr,annot=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "temp,atemp,两个数值特征和cnt是强相关"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 936x648 with 2 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 得到相关系数的绝对值，通常认为相关系数的绝对值大于0.5的特征为强相关\n",
    "data_corr = data_corr.abs()\n",
    "plt.subplots(figsize=(13, 9))\n",
    "sn.heatmap(data_corr,annot=True)\n",
    "\n",
    "# Mask unimportant features,突出重要信息\n",
    "sn.heatmap(data_corr, mask=data_corr < 0.5, cbar=False)\n",
    "\n",
    "#plt.savefig(\"house_coor.png\" )\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  2.对数据进行适当的特征工程"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "数据预处理对训练数据和测试数据需进行同样处理，因此将二者一起读入"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {
    "scrolled": false
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>dteday</th>\n",
       "      <th>season</th>\n",
       "      <th>yr</th>\n",
       "      <th>mnth</th>\n",
       "      <th>holiday</th>\n",
       "      <th>weekday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>weathersit</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>casual</th>\n",
       "      <th>registered</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>2011-01-01</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>6</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.344167</td>\n",
       "      <td>0.363625</td>\n",
       "      <td>0.805833</td>\n",
       "      <td>0.160446</td>\n",
       "      <td>331</td>\n",
       "      <td>654</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>2011-01-02</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>0.363478</td>\n",
       "      <td>0.353739</td>\n",
       "      <td>0.696087</td>\n",
       "      <td>0.248539</td>\n",
       "      <td>131</td>\n",
       "      <td>670</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>2011-01-03</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.196364</td>\n",
       "      <td>0.189405</td>\n",
       "      <td>0.437273</td>\n",
       "      <td>0.248309</td>\n",
       "      <td>120</td>\n",
       "      <td>1229</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>2011-01-04</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.200000</td>\n",
       "      <td>0.212122</td>\n",
       "      <td>0.590435</td>\n",
       "      <td>0.160296</td>\n",
       "      <td>108</td>\n",
       "      <td>1454</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>2011-01-05</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0.226957</td>\n",
       "      <td>0.229270</td>\n",
       "      <td>0.436957</td>\n",
       "      <td>0.186900</td>\n",
       "      <td>82</td>\n",
       "      <td>1518</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant      dteday  season  yr  mnth  holiday  weekday  workingday  \\\n",
       "0        1  2011-01-01       1   0     1        0        6           0   \n",
       "1        2  2011-01-02       1   0     1        0        0           0   \n",
       "2        3  2011-01-03       1   0     1        0        1           1   \n",
       "3        4  2011-01-04       1   0     1        0        2           1   \n",
       "4        5  2011-01-05       1   0     1        0        3           1   \n",
       "\n",
       "   weathersit      temp     atemp       hum  windspeed  casual  registered  \\\n",
       "0           2  0.344167  0.363625  0.805833   0.160446     331         654   \n",
       "1           2  0.363478  0.353739  0.696087   0.248539     131         670   \n",
       "2           1  0.196364  0.189405  0.437273   0.248309     120        1229   \n",
       "3           1  0.200000  0.212122  0.590435   0.160296     108        1454   \n",
       "4           1  0.226957  0.229270  0.436957   0.186900      82        1518   \n",
       "\n",
       "    cnt  \n",
       "0   985  \n",
       "1   801  \n",
       "2  1349  \n",
       "3  1562  \n",
       "4  1600  "
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 读入数据\n",
    "train = pd.read_csv(\"day.csv\")\n",
    "train.head()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 16 columns):\n",
      "instant       731 non-null int64\n",
      "dteday        731 non-null object\n",
      "season        731 non-null int64\n",
      "yr            731 non-null int64\n",
      "mnth          731 non-null int64\n",
      "holiday       731 non-null int64\n",
      "weekday       731 non-null int64\n",
      "workingday    731 non-null int64\n",
      "weathersit    731 non-null int64\n",
      "temp          731 non-null float64\n",
      "atemp         731 non-null float64\n",
      "hum           731 non-null float64\n",
      "windspeed     731 non-null float64\n",
      "casual        731 non-null int64\n",
      "registered    731 non-null int64\n",
      "cnt           731 non-null int64\n",
      "dtypes: float64(4), int64(11), object(1)\n",
      "memory usage: 91.5+ KB\n"
     ]
    }
   ],
   "source": [
    "train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "没有缺失数据"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###   特征工程：类别型特征编码\n",
    "对类别型特征进行独热编码"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>mnth_6</th>\n",
       "      <th>...</th>\n",
       "      <th>weathersit_1</th>\n",
       "      <th>weathersit_2</th>\n",
       "      <th>weathersit_3</th>\n",
       "      <th>weekday_0</th>\n",
       "      <th>weekday_1</th>\n",
       "      <th>weekday_2</th>\n",
       "      <th>weekday_3</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 26 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  mnth_4  \\\n",
       "0         1         0         0         0       1       0       0       0   \n",
       "1         1         0         0         0       1       0       0       0   \n",
       "2         1         0         0         0       1       0       0       0   \n",
       "3         1         0         0         0       1       0       0       0   \n",
       "4         1         0         0         0       1       0       0       0   \n",
       "\n",
       "   mnth_5  mnth_6    ...      weathersit_1  weathersit_2  weathersit_3  \\\n",
       "0       0       0    ...                 0             1             0   \n",
       "1       0       0    ...                 0             1             0   \n",
       "2       0       0    ...                 1             0             0   \n",
       "3       0       0    ...                 1             0             0   \n",
       "4       0       0    ...                 1             0             0   \n",
       "\n",
       "   weekday_0  weekday_1  weekday_2  weekday_3  weekday_4  weekday_5  weekday_6  \n",
       "0          0          0          0          0          0          0          1  \n",
       "1          1          0          0          0          0          0          0  \n",
       "2          0          1          0          0          0          0          0  \n",
       "3          0          0          1          0          0          0          0  \n",
       "4          0          0          0          1          0          0          0  \n",
       "\n",
       "[5 rows x 26 columns]"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#对类别型特征，观察其取值范围及直方图\n",
    "categorical_features = ['season','mnth','weathersit','weekday']\n",
    "\n",
    "#数据类型变为object，才能被get_dummies处理\n",
    "for col in categorical_features:\n",
    "    #强制转换数据类型\n",
    "    train[col] = train[col].astype('object')\n",
    "    #categori\n",
    "X_train_cat = train[categorical_features]\n",
    "X_train_cat = pd.get_dummies(X_train_cat)\n",
    "#X_train_cat独热编码好后的对象\n",
    "X_train_cat.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 26 columns):\n",
      "season_1        731 non-null uint8\n",
      "season_2        731 non-null uint8\n",
      "season_3        731 non-null uint8\n",
      "season_4        731 non-null uint8\n",
      "mnth_1          731 non-null uint8\n",
      "mnth_2          731 non-null uint8\n",
      "mnth_3          731 non-null uint8\n",
      "mnth_4          731 non-null uint8\n",
      "mnth_5          731 non-null uint8\n",
      "mnth_6          731 non-null uint8\n",
      "mnth_7          731 non-null uint8\n",
      "mnth_8          731 non-null uint8\n",
      "mnth_9          731 non-null uint8\n",
      "mnth_10         731 non-null uint8\n",
      "mnth_11         731 non-null uint8\n",
      "mnth_12         731 non-null uint8\n",
      "weathersit_1    731 non-null uint8\n",
      "weathersit_2    731 non-null uint8\n",
      "weathersit_3    731 non-null uint8\n",
      "weekday_0       731 non-null uint8\n",
      "weekday_1       731 non-null uint8\n",
      "weekday_2       731 non-null uint8\n",
      "weekday_3       731 non-null uint8\n",
      "weekday_4       731 non-null uint8\n",
      "weekday_5       731 non-null uint8\n",
      "weekday_6       731 non-null uint8\n",
      "dtypes: uint8(26)\n",
      "memory usage: 18.6 KB\n"
     ]
    }
   ],
   "source": [
    "X_train_cat.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 数值型特征\n",
    "对数值型特征进行标准化/MinMaxScaler，去量纲"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       temp     atemp       hum  windspeed\n",
       "0  0.355170  0.373517  0.828620   0.284606\n",
       "1  0.379232  0.360541  0.715771   0.466215\n",
       "2  0.171000  0.144830  0.449638   0.465740\n",
       "3  0.175530  0.174649  0.607131   0.284297\n",
       "4  0.209120  0.197158  0.449313   0.339143"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#数值型变量预处理，\n",
    "#用MinMaxScaler处理数据\n",
    "from sklearn.preprocessing import MinMaxScaler\n",
    "# MinMaxScaler对象\n",
    "mn_X = MinMaxScaler()\n",
    "numerical_features = ['temp','atemp','hum','windspeed']\n",
    "temper= mn_X.fit_transform(train[numerical_features])\n",
    "\n",
    "X_train_num = pd.DataFrame(data=temper, columns=numerical_features, index =train.index)\n",
    "#X_train_num是标准化去量纲后的数值型特征\n",
    "X_train_num.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 连接类别型特征X_train_cat和数值型特征X_train_num到X_train"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>mnth_6</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_3</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 32 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  mnth_4  \\\n",
       "0         1         0         0         0       1       0       0       0   \n",
       "1         1         0         0         0       1       0       0       0   \n",
       "2         1         0         0         0       1       0       0       0   \n",
       "3         1         0         0         0       1       0       0       0   \n",
       "4         1         0         0         0       1       0       0       0   \n",
       "\n",
       "   mnth_5  mnth_6     ...      weekday_3  weekday_4  weekday_5  weekday_6  \\\n",
       "0       0       0     ...              0          0          0          1   \n",
       "1       0       0     ...              0          0          0          0   \n",
       "2       0       0     ...              0          0          0          0   \n",
       "3       0       0     ...              0          0          0          0   \n",
       "4       0       0     ...              1          0          0          0   \n",
       "\n",
       "       temp     atemp       hum  windspeed  holiday  workingday  \n",
       "0  0.355170  0.373517  0.828620   0.284606        0           0  \n",
       "1  0.379232  0.360541  0.715771   0.466215        0           0  \n",
       "2  0.171000  0.144830  0.449638   0.465740        0           1  \n",
       "3  0.175530  0.174649  0.607131   0.284297        0           1  \n",
       "4  0.209120  0.197158  0.449313   0.339143        0           1  \n",
       "\n",
       "[5 rows x 32 columns]"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Join categorical and numerical features\n",
    "X_train = pd.concat([X_train_cat, X_train_num, train['holiday'],  train['workingday']], axis = 1, ignore_index=False)\n",
    "X_train.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 把做好特征工程的数据存放在FE_day.csv文件内备用"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 31,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>yr</th>\n",
       "      <th>cnt</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>985</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>801</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1349</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1562</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>1600</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 35 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant  season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  \\\n",
       "0        1         1         0         0         0       1       0       0   \n",
       "1        2         1         0         0         0       1       0       0   \n",
       "2        3         1         0         0         0       1       0       0   \n",
       "3        4         1         0         0         0       1       0       0   \n",
       "4        5         1         0         0         0       1       0       0   \n",
       "\n",
       "   mnth_4  mnth_5  ...   weekday_5  weekday_6      temp     atemp       hum  \\\n",
       "0       0       0  ...           0          1  0.355170  0.373517  0.828620   \n",
       "1       0       0  ...           0          0  0.379232  0.360541  0.715771   \n",
       "2       0       0  ...           0          0  0.171000  0.144830  0.449638   \n",
       "3       0       0  ...           0          0  0.175530  0.174649  0.607131   \n",
       "4       0       0  ...           0          0  0.209120  0.197158  0.449313   \n",
       "\n",
       "   windspeed  holiday  workingday  yr   cnt  \n",
       "0   0.284606        0           0   0   985  \n",
       "1   0.466215        0           0   0   801  \n",
       "2   0.465740        0           1   0  1349  \n",
       "3   0.284297        0           1   0  1562  \n",
       "4   0.339143        0           1   0  1600  \n",
       "\n",
       "[5 rows x 35 columns]"
      ]
     },
     "execution_count": 31,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#contact函数，在X_train的矩阵内，加入instant，yr,cnt列\n",
    "FE_train = pd.concat([train['instant'], X_train,  train['yr'],train['cnt']], axis = 1)\n",
    "FE_train.to_csv('FE_day.csv', index=False)\n",
    "FE_train.head()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 32,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 731 entries, 0 to 730\n",
      "Data columns (total 35 columns):\n",
      "instant         731 non-null int64\n",
      "season_1        731 non-null uint8\n",
      "season_2        731 non-null uint8\n",
      "season_3        731 non-null uint8\n",
      "season_4        731 non-null uint8\n",
      "mnth_1          731 non-null uint8\n",
      "mnth_2          731 non-null uint8\n",
      "mnth_3          731 non-null uint8\n",
      "mnth_4          731 non-null uint8\n",
      "mnth_5          731 non-null uint8\n",
      "mnth_6          731 non-null uint8\n",
      "mnth_7          731 non-null uint8\n",
      "mnth_8          731 non-null uint8\n",
      "mnth_9          731 non-null uint8\n",
      "mnth_10         731 non-null uint8\n",
      "mnth_11         731 non-null uint8\n",
      "mnth_12         731 non-null uint8\n",
      "weathersit_1    731 non-null uint8\n",
      "weathersit_2    731 non-null uint8\n",
      "weathersit_3    731 non-null uint8\n",
      "weekday_0       731 non-null uint8\n",
      "weekday_1       731 non-null uint8\n",
      "weekday_2       731 non-null uint8\n",
      "weekday_3       731 non-null uint8\n",
      "weekday_4       731 non-null uint8\n",
      "weekday_5       731 non-null uint8\n",
      "weekday_6       731 non-null uint8\n",
      "temp            731 non-null float64\n",
      "atemp           731 non-null float64\n",
      "hum             731 non-null float64\n",
      "windspeed       731 non-null float64\n",
      "holiday         731 non-null int64\n",
      "workingday      731 non-null int64\n",
      "yr              731 non-null int64\n",
      "cnt             731 non-null int64\n",
      "dtypes: float64(4), int64(5), uint8(26)\n",
      "memory usage: 70.0 KB\n"
     ]
    }
   ],
   "source": [
    "FE_train.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "经过标准化的数据，离散型特征采用了独热编码，数值型特征采用了minmax标准化，核对特征标签数量无误"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#  3.对全体数据训练和测试\n",
    " 对80%的数据进行训练，对20%的数据进行测试，评价指标为RMSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 33,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(731, 35)"
      ]
     },
     "execution_count": 33,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "\n",
    "FE_train = pd.read_csv(\"FE_day.csv\")\n",
    "FE_train.shape"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  划分样本特征x，和样本输出y总租车人数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>instant</th>\n",
       "      <th>season_1</th>\n",
       "      <th>season_2</th>\n",
       "      <th>season_3</th>\n",
       "      <th>season_4</th>\n",
       "      <th>mnth_1</th>\n",
       "      <th>mnth_2</th>\n",
       "      <th>mnth_3</th>\n",
       "      <th>mnth_4</th>\n",
       "      <th>mnth_5</th>\n",
       "      <th>...</th>\n",
       "      <th>weekday_4</th>\n",
       "      <th>weekday_5</th>\n",
       "      <th>weekday_6</th>\n",
       "      <th>temp</th>\n",
       "      <th>atemp</th>\n",
       "      <th>hum</th>\n",
       "      <th>windspeed</th>\n",
       "      <th>holiday</th>\n",
       "      <th>workingday</th>\n",
       "      <th>yr</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>1</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0.355170</td>\n",
       "      <td>0.373517</td>\n",
       "      <td>0.828620</td>\n",
       "      <td>0.284606</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>2</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.379232</td>\n",
       "      <td>0.360541</td>\n",
       "      <td>0.715771</td>\n",
       "      <td>0.466215</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>3</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.171000</td>\n",
       "      <td>0.144830</td>\n",
       "      <td>0.449638</td>\n",
       "      <td>0.465740</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>4</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.175530</td>\n",
       "      <td>0.174649</td>\n",
       "      <td>0.607131</td>\n",
       "      <td>0.284297</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>5</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>...</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0</td>\n",
       "      <td>0.209120</td>\n",
       "      <td>0.197158</td>\n",
       "      <td>0.449313</td>\n",
       "      <td>0.339143</td>\n",
       "      <td>0</td>\n",
       "      <td>1</td>\n",
       "      <td>0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "<p>5 rows × 34 columns</p>\n",
       "</div>"
      ],
      "text/plain": [
       "   instant  season_1  season_2  season_3  season_4  mnth_1  mnth_2  mnth_3  \\\n",
       "0        1         1         0         0         0       1       0       0   \n",
       "1        2         1         0         0         0       1       0       0   \n",
       "2        3         1         0         0         0       1       0       0   \n",
       "3        4         1         0         0         0       1       0       0   \n",
       "4        5         1         0         0         0       1       0       0   \n",
       "\n",
       "   mnth_4  mnth_5 ...  weekday_4  weekday_5  weekday_6      temp     atemp  \\\n",
       "0       0       0 ...          0          0          1  0.355170  0.373517   \n",
       "1       0       0 ...          0          0          0  0.379232  0.360541   \n",
       "2       0       0 ...          0          0          0  0.171000  0.144830   \n",
       "3       0       0 ...          0          0          0  0.175530  0.174649   \n",
       "4       0       0 ...          0          0          0  0.209120  0.197158   \n",
       "\n",
       "        hum  windspeed  holiday  workingday  yr  \n",
       "0  0.828620   0.284606        0           0   0  \n",
       "1  0.715771   0.466215        0           0   0  \n",
       "2  0.449638   0.465740        0           1   0  \n",
       "3  0.607131   0.284297        0           1   0  \n",
       "4  0.449313   0.339143        0           1   0  \n",
       "\n",
       "[5 rows x 34 columns]"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#划分样本特征x，和样本输出y总租车人数\n",
    "y=FE_train['cnt']\n",
    "X=FE_train.drop(['cnt'],axis=1)\n",
    "X.head() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  划分训练集和测试集"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "sklearn.model_selection包中的train_test_split的用法，X是样本特征集，y是样本结果，test_size是样本的划分比例，20%做测试集，80%做训练集，random_state是随机数种子，设置为0代表每次产生的训练集和测试集都是比例固定但随机的。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(584, 34) (147, 34)\n"
     ]
    }
   ],
   "source": [
    "from sklearn.model_selection import train_test_split\n",
    "X_train,X_test, y_train, y_test =train_test_split(X,y,test_size=0.2,random_state=30)\n",
    "feat_names=X.columns\n",
    "print(X_train.shape, X_test.shape)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###   观察预测值与真值的散点图"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "在cnt真值1000到4000的范围，模型预测效果不好"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 3.  用训练数据训练各种回归模型"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  最小二乘线性回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 36,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns         coef\n",
       "33            yr  5223.888353\n",
       "28         atemp  5049.134804\n",
       "13        mnth_9  1434.391907\n",
       "14       mnth_10  1092.417558\n",
       "16       mnth_12  1024.045016\n",
       "17  weathersit_1   772.832069\n",
       "15       mnth_11   742.721387\n",
       "4       season_4   714.072455\n",
       "12        mnth_8   609.077619\n",
       "18  weathersit_2   357.760840\n",
       "26     weekday_6   342.011295\n",
       "32    workingday   155.203442\n",
       "2       season_2   154.610075\n",
       "10        mnth_6    51.326964\n",
       "24     weekday_4    23.202271\n",
       "23     weekday_3    -6.895720\n",
       "0        instant    -8.807108\n",
       "3       season_3   -27.300932\n",
       "25     weekday_5   -29.982865\n",
       "22     weekday_2   -33.935957\n",
       "20     weekday_0  -126.109073\n",
       "11        mnth_7  -127.024301\n",
       "9         mnth_5  -141.706110\n",
       "21     weekday_1  -168.289951\n",
       "31       holiday  -371.105664\n",
       "8         mnth_4  -708.296382\n",
       "7         mnth_3  -770.906886\n",
       "1       season_1  -841.381598\n",
       "19  weathersit_3 -1130.592909\n",
       "30     windspeed -1263.568090\n",
       "27          temp -1317.431130\n",
       "6         mnth_2 -1411.416680\n",
       "29           hum -1425.865239\n",
       "5         mnth_1 -1794.630092"
      ]
     },
     "execution_count": 36,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from sklearn.linear_model import LinearRegression\n",
    "# 1.使用默认配置初始化学习器实例\n",
    "lr = LinearRegression()\n",
    "\n",
    "# 2.用训练数据训练模型参数\n",
    "lr.fit(X_train, y_train)\n",
    "\n",
    "# 3. 用训练好的模型对测试集进行预测\n",
    "y_test_pred_lr = lr.predict(X_test)\n",
    "y_train_pred_lr = lr.predict(X_train)\n",
    "\n",
    "\n",
    "feat_name=X.columns\n",
    "fs = pd.DataFrame({\"columns\":list(feat_name), \"coef\":list((lr.coef_.T))})\n",
    "fs.sort_values(by=['coef'],ascending=False)\n",
    "\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  岭回归模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 39,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 0.1\n"
     ]
    }
   ],
   "source": [
    "from sklearn.linear_model import RidgeCV\n",
    "#1设置超参数（正则参数）范围\n",
    "alphas = [0.01, 0.1, 1, 10, 100]\n",
    "#2.生成实例\n",
    "ridge = RidgeCV(alphas=alphas, store_cv_values=True) \n",
    "\n",
    "#3. 模型训练\n",
    "ridge.fit(X_train, y_train)    \n",
    "\n",
    "#4. 预测\n",
    "y_test_pred_ridge = ridge.predict(X_test)\n",
    "y_train_pred_ridge = ridge.predict(X_train)\n",
    "\n",
    "#可视化最佳参数\n",
    "mse_mean = np.mean(ridge.cv_values_, axis = 0)\n",
    "plt.plot(np.log10(alphas), mse_mean.reshape(len(alphas),1))\n",
    "\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()\n",
    "\n",
    "print ('alpha is:', ridge.alpha_)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "参数进行比较"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 40,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "      <td>3730.189163</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "      <td>3222.706642</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "      <td>1094.620857</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "      <td>650.548729</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "      <td>345.615181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "      <td>777.243469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "      <td>185.232269</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "      <td>729.751950</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "      <td>393.882318</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "      <td>358.992960</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "      <td>341.917237</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "      <td>158.858871</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "      <td>149.667102</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "      <td>96.085323</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "      <td>22.241549</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "      <td>-10.245330</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "      <td>-4.723234</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "      <td>-27.050328</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "      <td>-28.961369</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "      <td>-34.639766</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "      <td>-123.498905</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "      <td>-203.443934</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "      <td>49.090578</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "      <td>-166.813415</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "      <td>-377.277203</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "      <td>-373.534753</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "      <td>-315.443680</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "      <td>-852.368724</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "      <td>-1136.236428</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "      <td>-1323.021096</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "      <td>428.780610</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "      <td>-828.198432</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "      <td>-1395.857507</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "      <td>-1094.454455</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge\n",
       "33            yr  5223.888353  3730.189163\n",
       "28         atemp  5049.134804  3222.706642\n",
       "13        mnth_9  1434.391907  1094.620857\n",
       "14       mnth_10  1092.417558   650.548729\n",
       "16       mnth_12  1024.045016   345.615181\n",
       "17  weathersit_1   772.832069   777.243469\n",
       "15       mnth_11   742.721387   185.232269\n",
       "4       season_4   714.072455   729.751950\n",
       "12        mnth_8   609.077619   393.882318\n",
       "18  weathersit_2   357.760840   358.992960\n",
       "26     weekday_6   342.011295   341.917237\n",
       "32    workingday   155.203442   158.858871\n",
       "2       season_2   154.610075   149.667102\n",
       "10        mnth_6    51.326964    96.085323\n",
       "24     weekday_4    23.202271    22.241549\n",
       "23     weekday_3    -6.895720   -10.245330\n",
       "0        instant    -8.807108    -4.723234\n",
       "3       season_3   -27.300932   -27.050328\n",
       "25     weekday_5   -29.982865   -28.961369\n",
       "22     weekday_2   -33.935957   -34.639766\n",
       "20     weekday_0  -126.109073  -123.498905\n",
       "11        mnth_7  -127.024301  -203.443934\n",
       "9         mnth_5  -141.706110    49.090578\n",
       "21     weekday_1  -168.289951  -166.813415\n",
       "31       holiday  -371.105664  -377.277203\n",
       "8         mnth_4  -708.296382  -373.534753\n",
       "7         mnth_3  -770.906886  -315.443680\n",
       "1       season_1  -841.381598  -852.368724\n",
       "19  weathersit_3 -1130.592909 -1136.236428\n",
       "30     windspeed -1263.568090 -1323.021096\n",
       "27          temp -1317.431130   428.780610\n",
       "6         mnth_2 -1411.416680  -828.198432\n",
       "29           hum -1425.865239 -1395.857507\n",
       "5         mnth_1 -1794.630092 -1094.454455"
      ]
     },
     "execution_count": 40,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "####  Lasso模型"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 50,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "alpha is: 1.0\n"
     ]
    }
   ],
   "source": [
    "#### Lasso／L1正则\n",
    "# class sklearn.linear_model.LassoCV(eps=0.001, n_alphas=100, alphas=None, fit_intercept=True, \n",
    "#                                    normalize=False, precompute=’auto’, max_iter=1000, \n",
    "#                                    tol=0.0001, copy_X=True, cv=None, verbose=False, n_jobs=1,\n",
    "#                                    positive=False, random_state=None, selection=’cyclic’)\n",
    "from sklearn.linear_model import LassoCV\n",
    "#设置超参数范围\n",
    "alphas = [0.01, 0.1, 1, 10, 100]\n",
    "\n",
    "#2 生成LassoCV实例\n",
    "lasso =  LassoCV(alphas=alphas)\n",
    "\n",
    "#3. 训练（内含CV）\n",
    "lasso.fit(X_train, y_train)  \n",
    "\n",
    "#4. 测试\n",
    "y_test_pred_lasso = lasso.predict(X_test)\n",
    "y_train_pred_lasso = lasso.predict(X_train)\n",
    "# 可视化最佳参数\n",
    "mses = np.mean(lasso.mse_path_, axis = 1)\n",
    "plt.plot(np.log10(lasso.alphas_), mses)\n",
    "plt.xlabel('log(alpha)')\n",
    "plt.ylabel('mse')\n",
    "plt.show()    \n",
    "            \n",
    "print ('alpha is:', lasso.alpha_)\n",
    "\n",
    "\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>coef_lasso</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "      <td>3730.189163</td>\n",
       "      <td>2648.645283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "      <td>3222.706642</td>\n",
       "      <td>3711.185477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "      <td>1094.620857</td>\n",
       "      <td>822.087181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "      <td>650.548729</td>\n",
       "      <td>335.003219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "      <td>345.615181</td>\n",
       "      <td>-116.685321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "      <td>777.243469</td>\n",
       "      <td>418.121683</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "      <td>185.232269</td>\n",
       "      <td>-187.684469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "      <td>729.751950</td>\n",
       "      <td>556.873946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "      <td>393.882318</td>\n",
       "      <td>194.988663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "      <td>358.992960</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "      <td>341.917237</td>\n",
       "      <td>203.235617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "      <td>158.858871</td>\n",
       "      <td>0.125943</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "      <td>149.667102</td>\n",
       "      <td>8.088095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "      <td>96.085323</td>\n",
       "      <td>99.153461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "      <td>22.241549</td>\n",
       "      <td>42.166867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "      <td>-10.245330</td>\n",
       "      <td>9.748993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "      <td>-4.723234</td>\n",
       "      <td>-1.766613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "      <td>-27.050328</td>\n",
       "      <td>-130.739679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "      <td>-28.961369</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "      <td>-34.639766</td>\n",
       "      <td>-1.776321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "      <td>-123.498905</td>\n",
       "      <td>-245.625885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "      <td>-203.443934</td>\n",
       "      <td>-291.894473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "      <td>49.090578</td>\n",
       "      <td>152.526963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "      <td>-166.813415</td>\n",
       "      <td>-138.436767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "      <td>-377.277203</td>\n",
       "      <td>-506.353534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "      <td>-373.534753</td>\n",
       "      <td>-154.897195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "      <td>-315.443680</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "      <td>-852.368724</td>\n",
       "      <td>-1026.453532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "      <td>-1136.236428</td>\n",
       "      <td>-1476.472626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "      <td>-1323.021096</td>\n",
       "      <td>-1279.290214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "      <td>428.780610</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "      <td>-828.198432</td>\n",
       "      <td>-386.128126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "      <td>-1395.857507</td>\n",
       "      <td>-1363.057108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "      <td>-1094.454455</td>\n",
       "      <td>-563.187838</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge   coef_lasso\n",
       "33            yr  5223.888353  3730.189163  2648.645283\n",
       "28         atemp  5049.134804  3222.706642  3711.185477\n",
       "13        mnth_9  1434.391907  1094.620857   822.087181\n",
       "14       mnth_10  1092.417558   650.548729   335.003219\n",
       "16       mnth_12  1024.045016   345.615181  -116.685321\n",
       "17  weathersit_1   772.832069   777.243469   418.121683\n",
       "15       mnth_11   742.721387   185.232269  -187.684469\n",
       "4       season_4   714.072455   729.751950   556.873946\n",
       "12        mnth_8   609.077619   393.882318   194.988663\n",
       "18  weathersit_2   357.760840   358.992960     0.000000\n",
       "26     weekday_6   342.011295   341.917237   203.235617\n",
       "32    workingday   155.203442   158.858871     0.125943\n",
       "2       season_2   154.610075   149.667102     8.088095\n",
       "10        mnth_6    51.326964    96.085323    99.153461\n",
       "24     weekday_4    23.202271    22.241549    42.166867\n",
       "23     weekday_3    -6.895720   -10.245330     9.748993\n",
       "0        instant    -8.807108    -4.723234    -1.766613\n",
       "3       season_3   -27.300932   -27.050328  -130.739679\n",
       "25     weekday_5   -29.982865   -28.961369     0.000000\n",
       "22     weekday_2   -33.935957   -34.639766    -1.776321\n",
       "20     weekday_0  -126.109073  -123.498905  -245.625885\n",
       "11        mnth_7  -127.024301  -203.443934  -291.894473\n",
       "9         mnth_5  -141.706110    49.090578   152.526963\n",
       "21     weekday_1  -168.289951  -166.813415  -138.436767\n",
       "31       holiday  -371.105664  -377.277203  -506.353534\n",
       "8         mnth_4  -708.296382  -373.534753  -154.897195\n",
       "7         mnth_3  -770.906886  -315.443680     0.000000\n",
       "1       season_1  -841.381598  -852.368724 -1026.453532\n",
       "19  weathersit_3 -1130.592909 -1136.236428 -1476.472626\n",
       "30     windspeed -1263.568090 -1323.021096 -1279.290214\n",
       "27          temp -1317.431130   428.780610     0.000000\n",
       "6         mnth_2 -1411.416680  -828.198432  -386.128126\n",
       "29           hum -1425.865239 -1395.857507 -1363.057108\n",
       "5         mnth_1 -1794.630092 -1094.454455  -563.187838"
      ]
     },
     "execution_count": 51,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>columns</th>\n",
       "      <th>coef_lr</th>\n",
       "      <th>coef_ridge</th>\n",
       "      <th>coef_lasso</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>33</th>\n",
       "      <td>yr</td>\n",
       "      <td>5223.888353</td>\n",
       "      <td>3730.189163</td>\n",
       "      <td>2648.645283</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>28</th>\n",
       "      <td>atemp</td>\n",
       "      <td>5049.134804</td>\n",
       "      <td>3222.706642</td>\n",
       "      <td>3711.185477</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>13</th>\n",
       "      <td>mnth_9</td>\n",
       "      <td>1434.391907</td>\n",
       "      <td>1094.620857</td>\n",
       "      <td>822.087181</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>14</th>\n",
       "      <td>mnth_10</td>\n",
       "      <td>1092.417558</td>\n",
       "      <td>650.548729</td>\n",
       "      <td>335.003219</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>16</th>\n",
       "      <td>mnth_12</td>\n",
       "      <td>1024.045016</td>\n",
       "      <td>345.615181</td>\n",
       "      <td>-116.685321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>17</th>\n",
       "      <td>weathersit_1</td>\n",
       "      <td>772.832069</td>\n",
       "      <td>777.243469</td>\n",
       "      <td>418.121683</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>15</th>\n",
       "      <td>mnth_11</td>\n",
       "      <td>742.721387</td>\n",
       "      <td>185.232269</td>\n",
       "      <td>-187.684469</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>season_4</td>\n",
       "      <td>714.072455</td>\n",
       "      <td>729.751950</td>\n",
       "      <td>556.873946</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>12</th>\n",
       "      <td>mnth_8</td>\n",
       "      <td>609.077619</td>\n",
       "      <td>393.882318</td>\n",
       "      <td>194.988663</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>18</th>\n",
       "      <td>weathersit_2</td>\n",
       "      <td>357.760840</td>\n",
       "      <td>358.992960</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>26</th>\n",
       "      <td>weekday_6</td>\n",
       "      <td>342.011295</td>\n",
       "      <td>341.917237</td>\n",
       "      <td>203.235617</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>workingday</td>\n",
       "      <td>155.203442</td>\n",
       "      <td>158.858871</td>\n",
       "      <td>0.125943</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>season_2</td>\n",
       "      <td>154.610075</td>\n",
       "      <td>149.667102</td>\n",
       "      <td>8.088095</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>10</th>\n",
       "      <td>mnth_6</td>\n",
       "      <td>51.326964</td>\n",
       "      <td>96.085323</td>\n",
       "      <td>99.153461</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>24</th>\n",
       "      <td>weekday_4</td>\n",
       "      <td>23.202271</td>\n",
       "      <td>22.241549</td>\n",
       "      <td>42.166867</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>23</th>\n",
       "      <td>weekday_3</td>\n",
       "      <td>-6.895720</td>\n",
       "      <td>-10.245330</td>\n",
       "      <td>9.748993</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>instant</td>\n",
       "      <td>-8.807108</td>\n",
       "      <td>-4.723234</td>\n",
       "      <td>-1.766613</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>season_3</td>\n",
       "      <td>-27.300932</td>\n",
       "      <td>-27.050328</td>\n",
       "      <td>-130.739679</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25</th>\n",
       "      <td>weekday_5</td>\n",
       "      <td>-29.982865</td>\n",
       "      <td>-28.961369</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>22</th>\n",
       "      <td>weekday_2</td>\n",
       "      <td>-33.935957</td>\n",
       "      <td>-34.639766</td>\n",
       "      <td>-1.776321</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>20</th>\n",
       "      <td>weekday_0</td>\n",
       "      <td>-126.109073</td>\n",
       "      <td>-123.498905</td>\n",
       "      <td>-245.625885</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>11</th>\n",
       "      <td>mnth_7</td>\n",
       "      <td>-127.024301</td>\n",
       "      <td>-203.443934</td>\n",
       "      <td>-291.894473</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>9</th>\n",
       "      <td>mnth_5</td>\n",
       "      <td>-141.706110</td>\n",
       "      <td>49.090578</td>\n",
       "      <td>152.526963</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>21</th>\n",
       "      <td>weekday_1</td>\n",
       "      <td>-168.289951</td>\n",
       "      <td>-166.813415</td>\n",
       "      <td>-138.436767</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>holiday</td>\n",
       "      <td>-371.105664</td>\n",
       "      <td>-377.277203</td>\n",
       "      <td>-506.353534</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>8</th>\n",
       "      <td>mnth_4</td>\n",
       "      <td>-708.296382</td>\n",
       "      <td>-373.534753</td>\n",
       "      <td>-154.897195</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>7</th>\n",
       "      <td>mnth_3</td>\n",
       "      <td>-770.906886</td>\n",
       "      <td>-315.443680</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>season_1</td>\n",
       "      <td>-841.381598</td>\n",
       "      <td>-852.368724</td>\n",
       "      <td>-1026.453532</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>19</th>\n",
       "      <td>weathersit_3</td>\n",
       "      <td>-1130.592909</td>\n",
       "      <td>-1136.236428</td>\n",
       "      <td>-1476.472626</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>windspeed</td>\n",
       "      <td>-1263.568090</td>\n",
       "      <td>-1323.021096</td>\n",
       "      <td>-1279.290214</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>temp</td>\n",
       "      <td>-1317.431130</td>\n",
       "      <td>428.780610</td>\n",
       "      <td>0.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>6</th>\n",
       "      <td>mnth_2</td>\n",
       "      <td>-1411.416680</td>\n",
       "      <td>-828.198432</td>\n",
       "      <td>-386.128126</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>hum</td>\n",
       "      <td>-1425.865239</td>\n",
       "      <td>-1395.857507</td>\n",
       "      <td>-1363.057108</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>5</th>\n",
       "      <td>mnth_1</td>\n",
       "      <td>-1794.630092</td>\n",
       "      <td>-1094.454455</td>\n",
       "      <td>-563.187838</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "         columns      coef_lr   coef_ridge   coef_lasso\n",
       "33            yr  5223.888353  3730.189163  2648.645283\n",
       "28         atemp  5049.134804  3222.706642  3711.185477\n",
       "13        mnth_9  1434.391907  1094.620857   822.087181\n",
       "14       mnth_10  1092.417558   650.548729   335.003219\n",
       "16       mnth_12  1024.045016   345.615181  -116.685321\n",
       "17  weathersit_1   772.832069   777.243469   418.121683\n",
       "15       mnth_11   742.721387   185.232269  -187.684469\n",
       "4       season_4   714.072455   729.751950   556.873946\n",
       "12        mnth_8   609.077619   393.882318   194.988663\n",
       "18  weathersit_2   357.760840   358.992960     0.000000\n",
       "26     weekday_6   342.011295   341.917237   203.235617\n",
       "32    workingday   155.203442   158.858871     0.125943\n",
       "2       season_2   154.610075   149.667102     8.088095\n",
       "10        mnth_6    51.326964    96.085323    99.153461\n",
       "24     weekday_4    23.202271    22.241549    42.166867\n",
       "23     weekday_3    -6.895720   -10.245330     9.748993\n",
       "0        instant    -8.807108    -4.723234    -1.766613\n",
       "3       season_3   -27.300932   -27.050328  -130.739679\n",
       "25     weekday_5   -29.982865   -28.961369     0.000000\n",
       "22     weekday_2   -33.935957   -34.639766    -1.776321\n",
       "20     weekday_0  -126.109073  -123.498905  -245.625885\n",
       "11        mnth_7  -127.024301  -203.443934  -291.894473\n",
       "9         mnth_5  -141.706110    49.090578   152.526963\n",
       "21     weekday_1  -168.289951  -166.813415  -138.436767\n",
       "31       holiday  -371.105664  -377.277203  -506.353534\n",
       "8         mnth_4  -708.296382  -373.534753  -154.897195\n",
       "7         mnth_3  -770.906886  -315.443680     0.000000\n",
       "1       season_1  -841.381598  -852.368724 -1026.453532\n",
       "19  weathersit_3 -1130.592909 -1136.236428 -1476.472626\n",
       "30     windspeed -1263.568090 -1323.021096 -1279.290214\n",
       "27          temp -1317.431130   428.780610     0.000000\n",
       "6         mnth_2 -1411.416680  -828.198432  -386.128126\n",
       "29           hum -1425.865239 -1395.857507 -1363.057108\n",
       "5         mnth_1 -1794.630092 -1094.454455  -563.187838"
      ]
     },
     "execution_count": 52,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 看看各特征的权重系数，系数的绝对值大小可视为该特征的重要性\n",
    "fs = pd.DataFrame({\"columns\":list(feat_names), \"coef_lr\":list((lr.coef_.T)), \"coef_ridge\":list((ridge.coef_.T)), \"coef_lasso\":list((lasso.coef_.T))})\n",
    "fs.sort_values(by=['coef_lr'],ascending=False)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "从比较结果可明显看出L2正则(Ridge)使得线性回归系数收缩；而L1正则(Lasso)也会收缩回归系数，当正则参数取合适值时，L1正则使得有些回归系数为0得到稀疏模型。"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## 4. 模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 53,
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.metrics import mean_squared_error\n",
    "from sklearn.metrics import r2_score\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###  最小二乘法线性回归的模型评价"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### RMSE"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test_err: 799.4428184373651\n",
      "train_err: 754.3457349210205\n"
     ]
    }
   ],
   "source": [
    "#最小二乘法\n",
    "# RMSE(RMSE=MSE**0.5)\n",
    "train_err = mean_squared_error(y_train, y_train_pred_lr)**0.5\n",
    "test_err = mean_squared_error(y_test, y_test_pred_lr)**0.5\n",
    "\n",
    "print(\"test_err:\",test_err)\n",
    "print(\"train_err:\",train_err)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "#### r2_score"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "test_err: 0.820410248198458\n",
      "train_err: 0.8498931059139886\n"
     ]
    }
   ],
   "source": [
    "train_err = r2_score(y_train, y_train_pred_lr)\n",
    "test_err = r2_score(y_test, y_test_pred_lr)\n",
    "\n",
    "print(\"test_err:\",test_err)\n",
    "print(\"train_err:\",train_err)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "###   对岭回归模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The RMSE of RidgeCV on test is 768.0061706760736\n",
      "The RMSE of RidgeCV on train is 755.8435948170309\n"
     ]
    }
   ],
   "source": [
    "# 评估，使用RMSE评价模型在测试集和训练集上的性能\n",
    "print('The RMSE of RidgeCV on test is', mean_squared_error(y_test, y_test_pred_ridge)**0.5)\n",
    "print('The RMSE of RidgeCV on train is', mean_squared_error(y_train, y_train_pred_ridge)**0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 57,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2_score of RidgeCV on test is 0.8342566326002778\n",
      "The r2_score of RidgeCV on train is 0.8492963972399067\n"
     ]
    }
   ],
   "source": [
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print('The r2_score of RidgeCV on test is', r2_score(y_test, y_test_pred_ridge))\n",
    "print('The r2_score of RidgeCV on train is', r2_score(y_train, y_train_pred_ridge))"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### 对Lasso模型评价"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 58,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The RMSE of LassoCV on test is 771.9409017934009\n",
      "The RMSE of LassoCV on train is 757.6606231371941\n"
     ]
    }
   ],
   "source": [
    "print('The RMSE of LassoCV on test is', mean_squared_error(y_test, y_test_pred_lasso)**0.5)\n",
    "print('The RMSE of LassoCV on train is', mean_squared_error(y_train, y_train_pred_lasso)**0.5)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 59,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "The r2_score of LassoCV on test is 0.8325539739324594\n",
      "The r2_score of LassoCV on train is 0.8485709512365196\n"
     ]
    }
   ],
   "source": [
    "# 评估，使用r2_score评价模型在测试集和训练集上的性能\n",
    "print('The r2_score of LassoCV on test is', r2_score(y_test, y_test_pred_lasso))\n",
    "print('The r2_score of LassoCV on train is', r2_score(y_train, y_train_pred_lasso))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 61,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<module 'matplotlib.pyplot' from '/home/igenerator/anaconda3/lib/python3.7/site-packages/matplotlib/pyplot.py'>"
      ]
     },
     "execution_count": 61,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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JQDcfPPN5Ofn88tf/rJaGlVFVfF4ksfh+++/v95O1EsvvbRR+Uu1+r6bMab1aHt/xVdcAWPH1v46//yqgBDl9zvza1vniisalZW1a9cyePBgLr74YoYPH87GjRuZOnUqI0aMYNCgQdxyyy2xtMceeyxLliwhFArRsWNHpk2bxrBhwzj44IPZvNm5r+/Xv/41M2bMAGDMmDFMmzaNUaNGse+++/Lee+8BUFZWxsSJExk2bBiTJ09mxIgRsYAV75prrmHgwIEMHTqUa6+9FoBvv/2WU089laFDhzJs2DA+/PBDAP74xz8yePBgBg8ezF/+8pdav9tLL73EwQcfzPDhw5k0aRJlZWWNKjdjTPq0vaBQn8paRtKobf5uWrVqFeeffz4ff/wxvXv35rbbbmPRokUsXbqUV199lVWrVtVYZ/v27Rx++OEsXbqUgw8+mEcffTTptlWVBQsWcMcdd8QCzF/+8hd69OjB0qVLmTZtGh9//HGN9TZt2sSLL77IypUrWbZsGddddx3gnIkcc8wxLFu2jMWLF7PffvuxYMECZs2axYIFC3j//ff561//yrJly2p8t4yMDG677TZef/11PvroI4YOHcrdd9/dVMVojGkmba/5yD2SrlVxsdNklKh/f0jBCIp77bUXI0eOjE3Pnj2bRx55hFAoxIYNG1i1ahUDB1Z/zEROTg7HH388AAceeCDvvPNO0m1PmDAhlubLL78E4N13340d+Q8bNoxBgwbVWK9z5854PB4uvPBCTjzxRE466STAGTBszpw5APh8Pjp06MA777zDxIkTyc3NBeAnP/kJ7777Lscee2y17/bee++xatUqDjnkEAACgQBjxozZ9QIzxqRV2wsK9Zk+vXqfAkBurjM/BfLy8mKf16xZw913382CBQvo2LEjZ511VtLr4jMzM2OfvV4voVAo6bazsrJqpFFNOhBtNRkZGSxatIhXX32VOXPmcP/99/Of//wHqHlZZl3bi/9uqsq4ceN48skn692/Mablan/NR1OmwMyZzpmBiPM+c2ajO5l3xY4dOygoKKBDhw5s3LiRV155pcn3MWbMGJ5++mkAli9fnrR5aufOnezYsYOTTjqJu+66K9bEdMQRR/DAAw8AEA6H2bFjB4cddhjz58+nvLyc0tJS/vnPf3LooYfW2OYhhxzCW2+9xeeffw44fRtr1qxp8u9njEmt9nemAE4AaIYgkGj48OEMHDiQwYMHs+eee/LjH/+4yfdx+eWXc8455zB06FCGDx/O4MGDKSwsrJZm+/btTJgwgcrKSiKRCHfeeScA9957LxdeeCEPPvggPp+PBx98kFGjRjF58uRYM9Ell1zCkCFDWLt2bbVtFhUV8cgjjzBp0qTYZbi///3vGTBgQJN/R2NM6khDmhtakhEjRuiiRYuqzfvkk0/Yb7/90pSjptFU4/qEQiFCoRDZ2dmsWbOGY489ljVr1uDztf743xzjQ7Xmf0v2EJm6tffyEZHFqjqivnStv6Yw1ZSWlnLUUUcRCoVQ1dhRvzHGNITVFm1Mx44dWbx4cbqzYYxppdpfR7MxxphaWVAwxhgTY0HBGGNMjAUFY4wxMe0yKMxaPoviGcV4fuuheEYxs5bv/nDU3377LWeccQZ77bUXAwcO5IQTTuB///tfE+S26RUXF/P9998DxIalSHTeeecxd+7cOrfz+OOPs2HDhtj0BRdckPRmOWNM69Hurj6atXwWU/81FX/QGeZi3fZ1TP2XM3T2lCGNu6FNVRk/fjznnntubOygJUuWsGnTJvbZZ59YunA4jNfr3c1v0LSio6s2xuOPP87gwYPp1asXAA8//HBTZatJhUIhuyzXmAZqc2cKV7x8BWMfH1vr6/x/nh8LCFH+oJ/z/3l+retc8XLdQ2e/+eabZGRkcPHFF8fm7b///hx66KGUlJRwxBFHcOaZZzJkyBAA7rzzzthQ1NGhsMvKyjjxxBMZNmwYgwcP5qmnngJg2rRpsSGuE5/RAM5zGH71q1/Fph9//HEuv/xywBm87sADD2TQoEHMnDkzad7z8/MBJ7BddtllDBw4kBNPPDE2XDfALbfcwsiRIxk8eDBTp05FVZk7dy6LFi1iypQp7L///pSXlzN27FiiNxbOnj2bIUOGMHjw4NgAfdH93XDDDQwbNozRo0ezadOmGnl66623Yg8pOuCAA9i5cycAM2bMYMiQIQwbNoxp06YBTvAdPXo0Q4cOZfz48WzduhWAsWPHcv3113P44Ydz991389133zFx4kRGjhzJyJEj+e9//1v7D2pMO9bmgkJ9KsPJh8iubX5DrFixggMPPLDW5QsWLGD69OmsWrWKxYsX89hjj/Hhhx/ywQcf8NBDD/Hxxx/z2muv0atXL5YuXcqKFSsYN24cP/zwA/Pnz48Ncf3rX/+6xrZPO+005s2bF5t+6qmnmDRpEgCPPvooixcvZtGiRdxzzz1s2bKl1jzOnz+f1atXs3z5ch566KFqZxCXXXYZCxcuZMWKFZSXl/PCCy9w2mmnMWLECGbNmsWSJUvIycmJpd+wYQPXXnstb7zxBkuWLGHhwoU899xzgBP8Ro8ezdKlSznssMN46KGHauTlT3/6E/fddx9LlizhnXfeIScnh5deeokXXniBDz/8kKVLl8YC4TnnnMPtt9/OsmXLGDJkCL/97W9j29m2bRtvvfUWV199Nb/4xS+48sorWbhwIc8++ywXXHBBrWVhTHvW5s6pZ4yre+js4hnFrNtec+js/oX9KTmvJCV5GjVqFHvssQfgDG09fvz42AijEyZM4J133mHMmDH85je/4dprr+Wkk07i0EMPjQ1XccEFF1Qb4jpet27d2HPPPfnggw8YMGAAq1evjo2pdM899zB//nwAvv76a9asWUOXLl2S5vHtt99m8uTJeL1eevXqxZFHHhlb9uabb/LHP/4Rv9/PDz/8wKBBgzj55JNr/b4LFy5k7NixdOvWDYApU6bw9ttv85Of/ITMzMzY9zjwwAN59dVXa6z/4x//mKuuuoopU6YwYcIE+vTpw2uvvcZZZ50VG8K7c+fObN++nW3btnH44YcDcO6553L66afHthMNjgCvvfZatf6OHTt2NMuwGca0Nu3uTGH6UdPJzcitNi83I5fpRzV+6OxBgwbVeRdx4hDTyQwYMIDFixczZMgQrrvuOm655RZ8Ph8LFixg4sSJPPfcc4wbN45wOBxrWrnxxhsBp/J7+umnefbZZxk/fjwiQklJCa+99hrvv/8+S5cu5YADDkg6THe8xGGzASoqKvi///s/5s6dy/Lly7nwwgvr3U5d42llZGTE9lPbsODTpk3j4Ycfpry8nNGjR/Ppp5+iqknzV5f4co9EIrz//vssWbKEJUuW8M0331hAMCaJdhcUpgyZwsyTZ9K/sD+C0L+wPzNPntnoTmaAI488ksrKympNIQsXLuStt96qkfawww7jueeew+/3U1ZWxvz58zn00EPZuHEjubm5nHXWWfzyl7/ko48+orS0lO3bt3PCCScwY8YMlixZgtfrjVVs0aetTZgwgeeee47Zs2fHjo63b99Op06dyM3N5dNPP+WDDz6o8zscdthhzJkz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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "from sklearn import cross_validation\n",
    "from sklearn.learning_curve import learning_curve\n",
    "\n",
    "def plot_learning_curve(estimator, title, X, y, ylim=None, cv=None,\n",
    "                        n_jobs=1, train_sizes=np.linspace(.1, 1.0, 5)):\n",
    "    \n",
    "    plt.figure()\n",
    "    plt.title(title)\n",
    "    if ylim is not None:\n",
    "        plt.ylim(*ylim)\n",
    "    plt.xlabel(\"Training examples\")\n",
    "    plt.ylabel(\"Score\")\n",
    "    train_sizes, train_scores, test_scores = learning_curve(\n",
    "        estimator, X, y, cv=cv, n_jobs=n_jobs, train_sizes=train_sizes)\n",
    "    train_scores_mean = np.mean(train_scores, axis=1)\n",
    "    train_scores_std = np.std(train_scores, axis=1)\n",
    "    test_scores_mean = np.mean(test_scores, axis=1)\n",
    "    test_scores_std = np.std(test_scores, axis=1)\n",
    "    plt.grid()\n",
    "\n",
    "    plt.fill_between(train_sizes, train_scores_mean - train_scores_std,\n",
    "                     train_scores_mean + train_scores_std, alpha=0.1,\n",
    "                     color=\"r\")\n",
    "    plt.fill_between(train_sizes, test_scores_mean - test_scores_std,\n",
    "                     test_scores_mean + test_scores_std, alpha=0.1, color=\"g\")\n",
    "    plt.plot(train_sizes, train_scores_mean, 'o-', color=\"r\",\n",
    "             label=\"Training score\")\n",
    "    plt.plot(train_sizes, test_scores_mean, 'o-', color=\"g\",\n",
    "             label=\"Cross-validation score\")\n",
    "\n",
    "    plt.legend(loc=\"best\")\n",
    "    return plt\n",
    "\n",
    "title = \"Learning Curves (LinearRegression)\"\n",
    "cv = cross_validation.ShuffleSplit(X_train.shape[0], n_iter=10,test_size=0.2, random_state=0)\n",
    "estimator = LinearRegression()\n",
    "plot_learning_curve(estimator, title, X, y, (0.0, 1.01), cv=cv, n_jobs=4)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "总结： 模型没有处于过拟合状态，从r2_score可看出在测试集和训练集上的分数相差很小，而过拟合状态两者的分数应该相差较大。正则并未带来性能上的提升\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.0"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
